[id].vue 966 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <div class="article" v-if="article">
  3. <h1 class="article__title">{{ article.title }}</h1>
  4. <div class="article__meta">
  5. <p class="article__author">作者: {{ article.author }}</p>
  6. <p class="article__url">来源: <a :href="article.url" target="_blank">{{ article.url }}</a></p>
  7. </div>
  8. <div class="article__content" v-html="article.content"></div>
  9. </div>
  10. </template>
  11. <script setup>
  12. const route = useRoute()
  13. const { id } = route.params
  14. const { data: article } = await useFetch(`/api/articles/${id}`, {
  15. key: `article.${id}`
  16. })
  17. onMounted(() => {
  18. // 加载完成后滚动到页面顶部
  19. window.scrollTo(0, 0)
  20. })
  21. </script>
  22. <style lang="stylus">
  23. .article
  24. &__title
  25. font-size: 24px
  26. &__content
  27. img
  28. max-width: 100%
  29. &__meta
  30. font-size: 14px
  31. padding: 10px 20px
  32. background-color: var(--bg-gray-color)
  33. border-radius: 8px
  34. border: 1px solid var(--border-color)
  35. p
  36. margin: 0
  37. </style>